package com.liveinstars.im.core.service;

import com.liveinstars.api.im.vo.ImUserVO;

import java.util.List;

/**
 * @author: zhouze
 * @date: 2020/4/8
 */
public interface UserService {

    /**
     * 创建临时好友
     * @param applyUserId
     * @param acceptUserId
     */
    void createTemporaryFriend(Long applyUserId, Long acceptUserId);

    /**
     * 创建好友关系
     * @param applyUserId
     * @param acceptUserId
     */
    void createFriend(Long applyUserId, Long acceptUserId);

    /**
     * 获取临时好友列表
     * @param userId
     * @return
     */
    List<ImUserVO> listTemporaryFriendByUserId(Long userId);

    /**
     * 获取好友列表
     * @param userId
     * @return
     */
    List<ImUserVO> listFriendByUserId(Long userId);

    /**
     * 屏蔽好友或临时好友
     * @param userId
     * @param friendUserId
     */
    void shieldFriend(Long userId, Long friendUserId);

    /**
     * 取消屏蔽好友或临时好友
     * @param userId
     * @param friendUserId
     */
    void cancelShieldFriend(Long userId, Long friendUserId);

    /**
     * 删除好友或临时好友
     * @param userId
     * @param friendUserId
     */
    void deleteFriend(Long userId, Long friendUserId);

    /**
     * 备注好友名称
     * @param userId
     * @param friendUserId
     * @param remarkName
     */
    void remarkFriendName(Long userId, Long friendUserId, String remarkName);

    /**
     * 创建好友聊天圈子
     * @param applyUserId
     * @param acceptUserId
     * @param isTemporary 是否是临时好友
     */
    void createFriendChatGroup(Long applyUserId, Long acceptUserId, Boolean isTemporary);

    /**
     * 屏蔽用户操作
     * @param userId
     * @param shieldUserId
     * @param shield
     * @return
     */
    void shieldUser(Long userId, Long shieldUserId, Boolean shield);

    /**
     * 判断是否屏蔽状态
     * @param selfId
     * @param userId
     * @return
     */
    Boolean isShield(Long selfId, Long userId);

    /**
     * 获取im用户的信息
     * @param selfId
     * @param userId
     * @return
     */
    ImUserVO getImUserInfo(Long selfId, Long userId);
}
